var value = 1;

function foo() {
    console.log( this,value);
}

function bar() {
    var value = 2;
    console.log(this)
    window.foo();
}

bar();


// function foo(a) {
//     var b = 2;
//     function c() {}
//     var d = function() {};
  
//     b = 3;
  
//   }
  
//   foo(1);
//   在进入执行上下文后，这时候的 AO 是：
  
//   AO = {
//       arguments: {
//           0: 1,
//           length: 1
//       },
//       a: 1,
//       b: undefined,
//       c: reference to function c(){},
//       d: undefined
//   }
// 到这里变量对象的创建过程就介绍完了，让我们简洁的总结我们上述所说：

// 全局上下文的变量对象初始化是全局对象

// 函数上下文的变量对象初始化只包括 Arguments 对象

// 在进入执行上下文时会给变量对象添加形参、函数声明、变量声明等初始的属性值

// 在代码执行阶段，会再次修改变量对象的属性值


